其他
Paddle Serving v0.9.0 重磅发布多机多卡分布式推理框架
左右滑动扫码体验
Paddle Serving 框架支持 RESTful、gRPC、bRPC 等多种协议,接入多种高性能推理引擎,适配多种计算芯片、Docker 以及 Kubernetes 云端环境,提供基于 DAG 流水线设计,提供同步和异步2种处理框架,包括线程并发、自动批量、请求缓存等高性能并发处理能力。通过以上完善的基础功能、高性能推理能力,Paddle Serving 为实现大模型分布式推理奠定了稳固的基础。
针对上述方案的性能问题,将子图拓扑结构和计算控制逻辑从 Serving 下移到推理引擎层,每一轮 Loop 计算结果保存在 GPU 显存中缓存,无需拷贝 Host 内存。PP 节点之间插入 Send、Recv 算子,实现高性能数据通讯。新方案在服务启动时,以配置文件方式将子图拓扑结构传入到推理引擎中,每个节点有完整的子图拓扑,当前节点在拓扑结构中位置、相邻节点的 IP 和 Port,并与相邻节点完成握手。Master 节点接收用户请求,通过 RemoteOp 将数据发送到第0层子图的 Worker Serving 节点上,所有的计算和数据同步控制全部在推理引擎中完成,最终的计算结果由第0层子图的 Worker Serving 节点返回到 Master Serving 节点,返回给用户。
通常,大模型分布式推理优化技术包括动态批量、低精度 fp16、TensorRT 加速、fused 优化和显存 Cache 等,Paddle Serving 不仅采用了这些优化方法,同时也做了改进升级。例如动态批量技术在多个服务化推理框架中均有实现,原理是将多个请求 shape 维度相同但数值不同的 Tensor 自动 Padding 补0对齐,合并成一个大矩阵批量推理,充分利用 GPU Kernel 多 Block、多线程特性,提升计算吞吐。
Paddle Serving 动态批量技术的不同之处有2点。
第一,实现复杂的二维变长 Tensor 自动批量,如 Transformer 模型结构输入参数有二维变长 Tensor。
第二,提出了2种动态批量 Padding 合并 Batch 的策略(满足任意1个策略即可合并数据),解决完全 Padding 导致计算性能的退化的问题。
策略1:评估数据绝对长度的差值,当两批数据长度的绝对值差的字节数小于1024字节时(可配置),自动 Padding 补齐后合并 Batch。 策略2:评估数据的相似度,以两组数据 Shape 各个维度的乘积作为相似度,当相似度大于50%(可配置),自动 Padding 补齐后合并 Batch。
大模型部署面临的异常问题有3个:硬件故障、网络异常、服务异常等。整体异常处理预案如下:
硬件故障
单卡故障:服务实例迁移,其他无故障卡可复用。 单机故障:服务实例迁移
单机网络异常:服务实例迁移 Master 与 Worker 之间链接异常:采用短链接,半同步以及异常检测。
健康状态检查:定时端口检测&预测结果检测 服务夯住/挂掉:服务重启&supervise 拉起
测试环境
模型参数规模:百亿
测试结论
Paddle Serving 多机多卡分布式推理方案有良好的通用性和扩展性,能广泛支持不同种类的模型结构,实现高速推理,目前已支撑了如自然语言理解、对话、跨模态生成等大模型的实时在线应用。使用该方案实现大规模服务化部署,让大模型真正落成应用。
部署方案
伴随中国人工智能走进产业规模化应用的「深水区」,百度在大模型上搭建了适配场景需求的体系,提供全流程支持应用落地的工具和部署方案,让大模型技术赋能产业,让 AI 助推工业大生产。
线上部署
在 2022WAVE SUMMIT 2022 深度学习开发者峰会期间,文心大模型旸谷社区的大模型应用采用 Paddle Serving 分布式推理框架部署上线,为大模型大规模应用奠定了基础。Paddle Serving 多机多卡分布式推理框架的整体部署方案设计复杂,多地多中心、多机多卡组合、多级负载均衡、流量调度和异常故障处理等。整体部署思路如下图所示,与常规服务化部署的差异在于构建分布式部署的结构化思路。
首先,大模型服务是以 Group 为单位,每个 Group 由多个 Node 组成,Node 是经过虚拟化的部署容器,每个 Node 部署 Master 进程和 Worker 进程。其次,每个 Group 中仅有一个 Node 部署 Master 进程,负责接收外部请求流量。可根据模型规模、切分方法、单卡显存和单机的显存数量等因素,决定每个 Group上Node 的数量,如单机多卡、2机多卡、4机多卡以及8机多卡等。最后,Paddle Serving 提供了多机自适应配置生成与启动脚本,可根据全局配置信息;在相同 Group 的不同 Node 自动生成部署配置和启动脚本,简化人工设置,提高了部署效率。
通过以上方案实现多机多卡大模型部署。
部署案例
接下来,以百亿参数规模知识问答任务为例,为大家提供一个完整的部署案例,详细讲解 Paddle Serving 分布式推理的部署方案,详情请点击阅读原文。
⭐ 点击阅读原文获得 ⭐ERNIE 3.0百亿参数模型部署案例
知识问答任务示例
走进官网
Paddle Serving官网: https://github.com/PaddlePaddle/Serving 飞桨文心大模型官网: https://wenxin.baidu.com/